package com.adeng.springbootdemo.annotation;

import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;

import java.lang.annotation.*;

/**
 * 使用网易哨兵监测，必须作用在返回类型是是Boolean类型的方法上才能生效。
 * <p>
 * 暂时不支持 {@link HystrixCommand} 一起使用
 * <p>
 * 必须是 Object result = pjp.proceed(pjp.getArgs()) 才能使用
 *
 * @author hzwengcheng 2018-05-04 15:12
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Sentinelmonitor {

    /**
     * 业务名称
     *
     * @return
     */
    String bizName();

    /**
     * 默认false，注解的方法返回false才会触发网易哨兵
     *
     * @return
     */
    boolean returnBoolean() default false;

    /**
     * 是否开启返回true和false都会触发网易哨兵，默认关闭
     *
     * @return
     */
    boolean isAllReturn() default false;

    /**
     * 忽略指定的异常
     */
    Class<? extends Throwable>[] ignoreExceptions() default {};

}
